﻿using UnityEngine;
using System.Collections;

public class movimiento : MonoBehaviour {
	public float velocidad=5;
	public float gravedad=10;
	public float fuerzaSalto=5;

	private Animator controlador;
	private bool direccionDerecha;
	private Vector3 direccionMovimiento;
	private float velocidadVertical=0;
	private CharacterController controladorPersonaje;

	// Use this for initialization
	void Start () {
		controlador=gameObject.GetComponent<Animator>();
		controladorPersonaje=gameObject.GetComponent<CharacterController>();
		direccionDerecha=true;
		direccionMovimiento=new Vector3(0,0,0);
	}
	
	// Update is called once per frame
	void Update () {
		float x=Input.GetAxis("Horizontal");
		direccionHorizontal(x);
		direccionVertical();
		controladorSprite();
		motor();
	}

	void direccionHorizontal(float x){
		direccionMovimiento = new Vector3(x,0,0);
	}

	void direccionVertical(){

		if(controladorPersonaje.isGrounded){
			controlador.SetBool("salto",false);
			if(Input.GetButtonDown("Jump")){
				velocidadVertical=fuerzaSalto;
				controlador.SetBool("salto",true);
			}
		}
		else{
			velocidadVertical-=gravedad*Time.deltaTime;
			controlador.SetBool("salto",true);
		}
		controlador.SetFloat("direccionSalto",velocidadVertical/Mathf.Abs(velocidadVertical));
		direccionMovimiento+=new Vector3(0,velocidadVertical,0);
	}

	void motor(){
		controladorPersonaje.Move(direccionMovimiento*Time.deltaTime*velocidad);
		//Debug.Log(direccionMovimiento);
	}

	void controladorSprite(){
		float direc=direccionMovimiento.x;
		if(direc>0)
			direccionDerecha=true;
		if(direc<0)
			direccionDerecha=false;
		
		if(direc!=0)
			direc=direccionMovimiento.x/Mathf.Abs(direccionMovimiento.x);
		else{
			if(direccionDerecha)
				direc=0.01f;
			else
				direc=-0.01f;
		}
		controlador.SetFloat("direccion",direc);
	}
}
